/**
 * 功能：
 * 	使视图与相关事件相分离
 *  类似于action 用来传递数据和控制视图
 */
Ext.define('Risk.controller.MainTabController',{
	extend : 'Ext.app.Controller',
	stores: [
	          
	      ],
	    models: 
		[
	       
	     ],
	      
	      /**
	       * 视图在congtroller中进行注册
	       * 将控制权转交给 this Controller
	       */
	  	  //管理的视图
     views: [
            'RmPanel',
            'RAPanel',
            'RBPanel',
            'RCPanel',
            'RvPanel',
            'RUPowerPanel',
            'MytabPanel'
            ],
    // 类创建好后要做的初始化工作
	init : function() {
	  this.control({
		  //类似于JQuery中的选择器
		  'rapanel  button[action=save]':{//处理ra中的事件
			//保存ra
			 click: this.SaveResult /*,
			  resize: this.sizeChange*/
		  },
		  'rbpanel button[action=save]':{//rb 表单事件处理
				//保存rb
				  click: this.SaveResult
		 },
		'rvpanel button[action=save]':{//处理rm
			//计算ruline结果
			click:this.SaveResult
		},
		 'rcpanel button[action=save]':{
				//计算rc中的结果
				  click: this.SaveResult
		  },
		  'ruline button[action=save]':{//处理ru面板中的事件
				//保存ruline中的信息
				click:this.SaveResult
		  },
		  'rupower button[action=save]':{
				//保存ruline中的信息
				click:this.SaveResult
		 },
		 'rmpanel button[action=save]':{
				//保存ruline中的信息
				click:this.SaveResult
		 },
		 'rapanel  button[action=calculate]':{
			//计算ra结果
			  click: this.raCalculateRasult
		  },
		  
		  'rbpanel button[action=calculate]':{
			//计算rb中的结果
			  click: this.rbCalculateRasult
		  },
		  'rcpanel button[action=calculate]':{//处理Rc 中的事件
				//计算rc中的结果
				  click: this.rcCalculateRasult
		 },
		 'rcpanel > checkbox':
		{
				change:this.rcCheckboxHandler
		},
		'ruline button[action=cau]':{
			//计算ruline结果
			click:this.rulineCalculateRasult
		},
		'rupower button[action=cau]':{
			//计算ruline结果
			click:this.rulineCalculateRasult
		},
		'rmpanel button[action=cau]':{//处理rm
			//计算ruline结果
			click:this.rmpanelCalculateRasult
		},
		'rvpanel button[action=calculate]':{//处理rm
			//计算ruline结果
			click:this.rvpanelCalculateRasult
		},
		 'maintab':{//tab切换事件用于传递值
			  //计算rb中的结果
			  tabchange:function(tabPanel,newCard,oldCar,opts)
			  {
				  //index ra:0 rb:1 rc:2 ru:3 ru：4……
					 if(newCard.index==1)
					{
						if(newCard.down('lffieldSet').down("#ck").value)newCard.down('lffieldSet').down("#lf").setRawValue(tabPanel.down('rapanel').down('ltfieldSet').down('#lt').value);
						else newCard.down('lffieldSet').down("#lf").reset();
					}else if(newCard.index==2)
					{
						if(newCard.down('lcfieldset').down("#ck").value)newCard.down('lcfieldset').down("#lc").setRawValue(tabPanel.down('rapanel').down('ltfieldSet').down('#lt').value);
						else newCard.down('lcfieldset').down("#lc").reset();
						if(newCard.down('lc2fieldset').down("#ck").value)newCard.down('lc2fieldset').down("#lc").setRawValue(tabPanel.down('rapanel').down('ltfieldSet').down('#lt').value);
						else newCard.down('lc2fieldset').down("#lc").reset();
					}else if(newCard.index==5)
					{
						//获取rc 中PC 选项进行
						var isPower= tabPanel.items.get(2).items.get(0).getValue();
						var isLine = tabPanel.items.get(2).items.get(2).getValue();
						//处理选择电力要初始化的内容
						
						if(isPower)
						{
							var num = tabPanel.items.get(2).items.get(1).down("#pcp").value==1;
							newCard.items.get(0).down('checkbox').setValue(!num);
							//设置k4的值
							var o = tabPanel.items.get(3).down('pufieldSet').down('radio[checked=true][name=kv]');
							if(!(o==null || o == undefined))
							newCard.items.get(0).down('pmfieldset').down('#ks4').setValue(parseFloat(o.inputValue)/1.5);
							
						}
						
						//处理选择通信要处理的内容
						if(isLine)
						{
							var num = tabPanel.items.get(2).items.get(3).down("#pcc").value==1;
							newCard.items.get(1).down('checkbox').setValue(!num);
							//设置k4的值
							var o = tabPanel.items.get(4).down('pufieldSet').down('radio[checked=true][name=kv]');
							if(!(o==null || o == undefined))
							newCard.items.get(1).down('pm2fieldset').down('#ks4').setValue(parseFloat(o.inputValue)/1.5);
						}
					};
			  }
		  }
	  });
	},
	SaveResult:function(obj)//保存Ruline
	{
		//获取树形菜单
		 var tree = obj.up("maintab").ownerCt.ownerCt.items.get(0);
		//获得项目的id
		 var projectId = tree.getSelectionModel().selected.items[0].data.id;
		 
		 var form = obj.up('form').getForm();
            if (form.isValid()){
                form.submit({
                	params:{projid:projectId},
                    success: function(form, action) {
                       Ext.Msg.alert('Success', action.result.message);
                    },
                    failure: function(form, action) {
                        Ext.Msg.alert('Failed', action.result ? action.result.message : 'No response');
                    }
                });
            }else
            {
            	Ext.Msg.alert('Success', "表单信息不完整，请核对后再提交！");
            }
	},
	rcCalculateRasult:function(obj)
	{
		var pcPower = 0;
		var pcCommunicate=0;
		
		if(obj.up('form').down('#power').value)
			pcPower = obj.up('form').down('pcpowerfieldSet').down('#pcp').value;
		if(obj.up('form').down('#communicate').value)
			pcCommunicate = obj.up('form').down('pcfieldSet').down('#pcc').value;
		
		var nd = obj.up("maintab").down('rapanel').down('resultfieldSet').down('#Nd').value;
		
		var lc = obj.up("form").down('lcfieldset').down('#lc').getRawValue();
		var lc2 = obj.up("form").down('lc2fieldset').down('#lc').getRawValue();
		
		var r1pc = nd*(pcPower+pcCommunicate)*lc;
		var r2pc =  nd*(pcPower+pcCommunicate)*lc2;
		
		var rc01 = nd*(pcPower>pcCommunicate?pcPower:pcCommunicate)*lc;
		
		obj.up("form").down('rcresult').down('#r1').setRawValue(r1pc);
		obj.up("form").down('rcresult').down('#r2').setRawValue(r2pc);
		obj.up("form").down('rcresult').down('#r3').setRawValue(rc01);
	},
	raCalculateRasult:function(bt,  e,  eOpts)
	{
		 var Nd = 0;
		 var RA = 0;
		 var Ng = 0.024;
		 var Ad = bt.up("form").down('#area').value;
		 var Cd = bt.up("form").down('#cd').value;
		 var Td = parseFloat(bt.up("form").down('#td').value);
		 var Pa = bt.up("form").down('#pa').value;
		 var Lt = bt.up("form").down('#lt').value;
		 var ra = bt.up("form").down('#ra').value;
		
		 Nd = Ng*Ad*Cd*(10e-6)*Math.pow(Td,1.3);
		 RA = Nd*ra*Lt*Pa;
		 
		 bt.up("form").down('#Nd').setValue(Nd.toFixed(9));
		 bt.up("form").down('#RA').setValue(RA);
	},
	rbCalculateRasult:function(obj){
	  	
		var nd = obj.up("maintab").down('rapanel').down('resultfieldSet').down('#Nd').value;
		var lt = obj.up("maintab").down('rapanel').down('ltfieldSet').down('#lt').value;
        
        var pb=  obj.up('form').down('#pb').getValue();
        
		var rp = obj.up('form').down('#rp').getValue();
		var hz = obj.up('form').down('#hz').getValue();
		var rf = obj.up('form').down('#rf').getValue();
		var lf = obj.up('form').down('lffieldSet').down('#lf').getValue();
        var lf2= obj.up('form').down('lffieldSet2').down('#lf').getValue();
		
        var r1 = rp * hz * rf * lt*pb*nd;
		var r2 = rp * rf * lf*nd*pb;
		var r3 = rp * rf * lf2*nd*pb;
		
		obj.up('form').down('rbResult').down('#lb1').setValue(rp * hz * rf * lt);
        obj.up('form').down('rbResult').down('#lb2').setValue(rp * rf * lf);
        obj.up('form').down('rbResult').down('#lb3').setValue(rp * rf * lf2);
        
        obj.up('form').down('rbResult').down('#r1').setValue(r1);
        obj.up('form').down('rbResult').down('#r2').setValue(r2);
        obj.up('form').down('rbResult').down('#r3').setValue(r3);
	},
	rcCheckboxHandler:function(obj,  n,  o)
	{
		if(obj.inputValue==1)obj.up('maintab').down('rupower').setDisabled(!obj.value);
		else obj.up('maintab').down('ruline').setDisabled(!obj.value);
	},
	rulineCalculateRasult:function(obj)
	{
		var Pu = 0;
		var ru = 0;
		try{
			ru =  parseFloat( obj.up('form').down('rufieldset').down('#ru').value);
		}catch(e){}
		//Ra中的值
		var Lt = parseFloat(obj.up("maintab").down("rapanel").down('ltfieldSet').down('#lt').value);
		var Ad =parseFloat(obj.up("maintab").down("rapanel").down('adfieldSet').down('#area').value);
		var Cd =obj.up("maintab").down("rapanel").down('cdfieldSet').down('#cd').value;
		var Td = obj.up("maintab").down("rapanel").down('resultfieldSet').down('#td').value;
		var Ng = 0.024*Math.pow(Td, 1.5);
		var A1 = parseFloat( obj.up('form').down('alfieldSet').down('#al').value);
		
		//psd = 1 说明没有采取防护措施 股pu = Pld
		var psd= parseFloat(obj.up("maintab").down("rcpanel").down('pcfieldSet').down('#pcc').value);
		var temp = parseFloat( obj.up('form').down('pufieldSet').down('#pu').value);
		//如果psd采取了防护措施则 pu = min(temp,psd)
		if(psd==1)Pu = temp;
		else Pu = psd>temp?temp:psd;
		
		//计算有误
		var Lu = 1.0*Lt*ru;
		
		var Ct = 1;
		if(obj.up("form").down('ctandru')!=undefined)
		{
			Ct = parseFloat(obj.up("form").down('ctandru').items.get(0).down('#ct').value);
			ru = parseFloat(obj.up("form").down('ctandru').items.get(1).down('#ct').value);
		}
		
		var Nl =Ng*A1*Cd*Ct*Math.pow(10, -6);
		var Nda=Ng*Ad*Cd*Ct*Math.pow(10, -6);
		var Ru = (Nl+Nda)*Pu*Lu;
		//alert(Ru);nda
		obj.up('form').down('#nda').setValue(Nda);
		obj.up('form').down('#nl').setValue(Nl);
		obj.up('form').down('#rures').setValue(Ru);
	},
	rmpanelCalculateRasult:function(obj)
	{
		var Td = obj.up("maintab").down("rapanel").down('resultfieldSet').down('#td').value;
		var Ng = 0.024*Math.pow(Td, 1.5);
		var Ad = parseFloat(obj.up("maintab").down("rapanel").down('adfieldSet').down('#area').value);
		var Cd = obj.up("maintab").down("rapanel").down('cdfieldSet').down('#cd').value; 
		
		var Lm1 = obj.up("maintab").down("rcpanel").items.get(4).down('#lc').value;
		var Lm2 = obj.up("maintab").down("rcpanel").items.get(5).down('#lc').value;
		
		var L = 0;
		var W = 0;
		
		var AD = obj.up("maintab").down("rapanel").down('adfieldSet');
		var Am = parseFloat(AD.down("#am").value);
		
		var f = obj.up("maintab").down("rapanel").down('adfieldSet').down('radio[checked=true]').inputValue==1;
		
		if(f)
		{
			 L = parseFloat(AD.down("#l").value);//Ext.get('AD_TIP3').getValue();
			 W = parseFloat(AD.down("#w").value);//Ext.get('AD_TIP4').getValue();
			 Am = L*W+500*(L+W)+62500*Math.PI;
		}
		
		var pm1= obj.up('form').items.get(0).down("#pmres").value;
		var pm2 =obj.up('form').items.get(1).down("#pmres").value;
		var Pm = (parseFloat(pm1)+parseFloat(pm2));
		//TODO pm1+pm2
		var Nm =Ng*(Am-Ad)*Cd*Math.pow(10, -6);
		var R1Rm = Nm*Pm*Lm1;
		var R2Rm = Nm*Pm*Lm2;
		
		obj.up('form').down('resultfieldset').down("#r1").setValue(R1Rm);
		obj.up('form').down('resultfieldset').down("#r2").setValue(R2Rm);
	},
	rvpanelCalculateRasult:function(obj)
	{
		var pv1 = parseFloat(obj.up("form").down("pv1fieldSet").down('#pv1').value);
		var pv2 = parseFloat(obj.up("form").down("pv2fieldSet").down('#pv2').value);
		var Pz1 = parseFloat(obj.up("form").down("pz1fieldSet").down('#pz1').value);
		var pz2 = parseFloat(obj.up("form").down("pz2fieldSet").down('#pz2').value);
		var ce1 = parseFloat(obj.up("form").down("ce1fieldSet").down('#ce1').value);
		var ce2 = parseFloat(obj.up("form").down("ce2fieldSet").down('#ce2').value);
		
		//对应R1 R2 R3中的计算值
		var Lv1 = parseFloat(obj.up("maintab").down("rbpanel").down('rbResult').down('#lb1').value);
		var Lv2 = parseFloat(obj.up("maintab").down("rbpanel").down('rbResult').down('#lb2').value) ;
		var Lv3 = parseFloat(obj.up("maintab").down("rbpanel").down('rbResult').down('#lb3').value);
		
		//电力
		var NL1 = parseFloat(obj.up('maintab').down('rupower').down('#nl').value);
		var NDa1 =parseFloat( obj.up('maintab').down('rupower').down('#nda').value);
		//通信
		var NL2 =parseFloat(obj.up('maintab').down('ruline').down('#nl').value);
		var NDa2 =parseFloat(obj.up('maintab').down('ruline').down('#nda').value);
		
		var Td = obj.up("maintab").down("rapanel").down('resultfieldSet').down('#td').value;
		var Ng = 0.024*Math.pow(Td, 1.5);
		
		var flag1  =obj.up('maintab').down('rcpanel').items.get(0).value;
		var flag2  =obj.up('maintab').down('rcpanel').items.get(2).value;
		
		
		var temp1 =  parseFloat(obj.up('maintab').down('rcpanel').items.get(1).down("radio[checked=true]").inputValue);
		var temp2 =  parseFloat(obj.up('maintab').down('rcpanel').items.get(3).down("radio[checked=true]").inputValue);
		
		if(flag1)
		{
			Pz1 = Pz1 >temp1 ? temp1:Pz1;
		}
		
		if(flag2)
		{
			pz2 = pz2 >temp2 ? temp2:pz2;
		}
		
		
		var Ai = parseFloat(obj.up('maintab').down('rupower').down('alfieldSet').down('#ai').value);
		var Ct1 = parseFloat(obj.up('maintab').down('rupower').down('ctandru').down('#ct').value);
		var Ct2 = 1;
		//var NI=Ng×Ai×Ce×Ct×10-6
		
		var Ni1 = Ng*Ai*ce1*Ct1*Math.pow(10, -6);
		var Ni2 = Ng*Ai*ce2*Ct2*Math.pow(10, -6);
		
		
		var Rv11=(NL1+NDa1)*pv1*Lv1;
		var Rv12=(NL2+NDa2)*pv2*Lv1;
		
		var Rv21=(NL1+NDa1)*pv1*Lv2;
		var Rv22=(NL2+NDa2)*pv2*Lv2;
		
		var Rv31=(NL1+NDa1)*pv1*Lv3;
		var Rv32=(NL2+NDa2)*pv2*Lv3;
		
		var Lc1 = parseFloat(obj.up("maintab").down("rcpanel").items.get(4).down('#lc').value);
		var Lc2 = parseFloat(obj.up("maintab").down("rcpanel").items.get(5).down('#lc').value);
		
		//RW=(NL + NDa)×PW×LW
		var Rw11 = (NL1+NDa1)*pv1*Lc1;
		var Rw12 = (NL2+NDa2)*pv2*Lc1;
		
		var Rw21 = (NL1+NDa1)*pv1*Lc2;
		var Rw22 = (NL2+NDa2)*pv2*Lc2;
		
		//R=( NI-NL)×PZ×LZ
		//电力
		var Rz11 = (Ni1 - NL1)*Lc1*Pz1;
		var Rz21 = (Ni1 - NL1)*Lc2*Pz1;
		//通信
		var Rz12 = (Ni2 - NL1)*Lc1*pz2;
		var Rz22 = (Ni2 - NL1)*Lc2*pz2;
		//var Rz2 = 0;
		obj.up("form").down("#r1").setValue(Rv11);
		obj.up("form").down("#r2").setValue(Rv12);
		obj.up("form").down("#r3").setValue(Rv21);
		obj.up("form").down("#r4").setValue(Rv22);
		obj.up("form").down("#r5").setValue(Rv31);
		obj.up("form").down("#r6").setValue(Rv32);
		
		obj.up("form").down("#r7").setValue(Rw11);
		obj.up("form").down("#r8").setValue(Rw12);
		obj.up("form").down("#r9").setValue(Rw21);
		obj.up("form").down("#r10").setValue(Rw22);
		
		obj.up("form").down("#r11").setValue(Rz11);
		obj.up("form").down("#r12").setValue(Rz21);
		obj.up("form").down("#r13").setValue(Rz12);
		obj.up("form").down("#r14").setValue(Rz22);

	}
	
	
	
});